/*
提交链接：https://leetcode.cn/problems/maximum-erasure-value/submissions/560390236
1695. 删除子数组的最大得分-中等
完成日期：2024/9/1
滑动窗口
*/

class Solution {
public:
    int maximumUniqueSubarray(vector<int>& nums) {
        unordered_set<int> s;  // 记录当前窗口中的元素
        int left = 0;  // 左指针
        int current_sum = 0;  // 当前窗口的元素和
        int max_score = 0;  // 最大得分
        for (int right = 0; right < nums.size(); ++right) {
            while (s.count(nums[right])) {
                s.erase(nums[left]);
                current_sum -= nums[left];
                ++left;
            }
            s.insert(nums[right]);
            current_sum += nums[right];
            max_score = max(max_score, current_sum);
        }
        return max_score;
    }
};
